﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;

namespace PuanSunucusu
{
    public class CashRegister
    {
        public void PuanBilgisiGonder()
        {
            using (PromoEntities ent = new PromoEntities())
            {
                var depoListe = ent.Magazalar.ToList();
                var puanTanimlari = ent.PuanTanimlari.ToList();
                PuanDosyasiYaz(puanTanimlari);

                foreach (var depo in depoListe)
                {
                    if (Directory.Exists(depo.PosgenelYol))
                    {
                        File.Copy(Application.StartupPath + "\\PUAN.DAT", depo.PosgenelYol + "\\PUAN.DAT", true);
                    }
                    if (Directory.Exists(depo.PoskonYol))
                    {
                        foreach (string yol in depo.KasaNolari.Split(','))
                        {
                            File.Copy(Application.StartupPath + "\\MESAJ.DAT", string.Format(depo.PoskonYol + "\\MESAJ.{0}", int.Parse(yol).ToString("000")), true);
                        }
                    }
                }
            }
        }

        private void PuanDosyasiYaz(List<PuanTanim> tanimlar)
        {
            using (StreamWriter sw = new StreamWriter(Application.StartupPath + "\\PUAN.DAT", false, Encoding.GetEncoding("ibm857")))
            {
                foreach (PuanTanim p in tanimlar)
                {
                    string line = "";
                    if (!string.IsNullOrEmpty(p.MusteriAraligi))
                        line = string.Format("{0},{1},{2},{3},{4},{5},{6},{7}", p.BaslangicTarihi.ToFormattedString()
                        , p.BitisTarihi.ToFormattedString(), p.AlisverisToplami.AddZeroLeft(10), p.VerilecekPuan.AddZeroLeft(10), p.AlisverisPuani.AddZeroLeft(10),
                        p.PuanParaKarsiligi.AddZeroLeft(10), p.PuanlaOdemeFisLimiti.AddZeroLeft(10), p.MusteriAraligi);
                    else
                        line = string.Format("{0},{1},{2},{3},{4},{5},{6}", p.BaslangicTarihi.ToFormattedString()
                        , p.BitisTarihi.ToFormattedString(), p.AlisverisToplami.AddZeroLeft(10), p.VerilecekPuan.AddZeroLeft(10), p.AlisverisPuani.AddZeroLeft(10),
                        p.PuanParaKarsiligi.AddZeroLeft(10), p.PuanlaOdemeFisLimiti.AddZeroLeft(10));

                    sw.WriteLine(line);
                }
                sw.Close();
            }
            using (StreamWriter sw = new StreamWriter(Application.StartupPath + "\\MESAJ.DAT"))
            {
                sw.WriteLine("11400000001000000000000000000000000");
            }
        }

    }
}
